/**
 * @file
 * @author  Tsin Smith <tsin.creator@gmail.com>
 *
 * @section DESCRIPTION
 *
 * A simple implementation of Argument using the given command line providings directly.
 *
 */

#ifndef __TSIN_SIMPLEARGUMENT_HPP__
#define __TSIN_SIMPLEARGUMENT_HPP__

#include <tsin/Argument.hpp>

#include <getoptpp/getopt_pp.h>

namespace tsin {

        class SimpleArgument : public Argument
        {
        public:
                /**
                 * Initialize an Argument object using command line providings.
                 *
                 * @param argc Number of arguments.
                 * @param argv A C-style string array of the arguments.
                 */
                SimpleArgument(int argc, char *argv[]);

                int size();
                char *getArgument(int index);

                bool getOption(char shortName, const char *longName, char *opt);
                bool getOption(char shortName, const char *longName, int &opt);
        private:
                int argc;
                char **argv;

                GetOpt::GetOpt_pp ops;
        };

}

#endif /* __TSIN_SIMPLEARGUMENT_HPP__ */
